package arithmetic1.sort;

import java.text.SimpleDateFormat;
import java.util.Date;

/*
    选择排序:
        第一次从数组里面找出最小的数，放在第0个位置。第二次从除第0个位置后面的所有数里再找出最小的数，放在第1个位置.依次类推
 */
public class SelectSort {
    public static void main(String[] args) {
//        int arr[]={6,1,68,3,9,32};
        //创建一个80000个数的随机数组
        int arr[]=new int[80000];
        for (int i = 0; i < arr.length; i++) {
            arr[i]= (int) (Math.random()*800000);
        }

        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String time1 = sdf.format(date);
        System.out.println("排序前的时间:"+time1);

        selectSort(arr);

        date=new Date();
        String time2=sdf.format(date);
        System.out.println("排序后的时间:"+time2);

//        System.out.println("排序后为:"+ Arrays.toString(arr));
    }

    //选择排序
    public static void selectSort(int arr[]){
        for(int i=0;i<arr.length-1;i++){
            int min=arr[i];
            //用来保存最小数的数组下标
            int k=i;
            for(int j=i;j<=arr.length-1;j++){
                if(min>arr[j]){
                    min=arr[j];
                    k=j;
                }
            }
            if(k!=i){       //只有当第一个数不是该轮排序最小值的时候才去交换，如果第一个数已经是最小值其实不用交换
                //交换
                arr[k]=arr[i];
                arr[i]=min;
            }
        }
    }
}
